#!/usr/bin/python

from sys import argv
from random import *
from math import *
from alfombra import *

def main():
	if len(argv) < 7:
		print "modo de uso: test_gen cant_mediciones cant_misiles radio_planeta cant_bombas radio_explosion archivo_salida"
		return

	momento_impacto= int(argv[1])
	cant_misiles= int(argv[2])
	radio_planeta= float(argv[3])
	cant_bombas= int(argv[4])
	radio_explosion= float(argv[5])
	archivo_salida= argv[6]

	funciones= []
	for i in range(0, cant_misiles):
		es_polinomio= randint(0,10)>3
		r= uniform(3, momento_impacto)*4*radio_planeta
		tita= uniform(0, 2*pi)
		x0, y0= r*cos(tita), r*sin(tita)
		if es_polinomio or True:
			grado= randint(2, 5)
			print "polinomio(grado:%d, pos0:(%f,%f)" % (grado, x0, y0)
			funciones.append(polinomio(2, 2*momento_impacto-1, (x0,y0), radio_planeta))
		else:
			print "funcion_rara(pos0:(%f,%f)" % (x0, y0)
			funciones.append(funcion_rara(2*momento_impacto-1, (x0,y0), radio_planeta))

	stream_input= open(archivo_salida,"w")
	stream_input.write("%d %d\n\n" % (cant_misiles,momento_impacto))

	for f in funciones:
		valores= map(lambda t:f(t), range(0, momento_impacto))
		for x,y in valores:
			stream_input.write("%s %s\n" % (fix(x),fix(y)))
		stream_input.write("\n")

	stream_input.write("%d %s %s" % (cant_bombas, fix(radio_explosion), fix(radio_planeta)))
	stream_input.close()

def fix(flt):
	str_f= str(flt)
	p= str_f.find('.') 
	if p==-1:
		return str_f
	else:
		return str_f[:p+2]

main()
